package mathematics;

import java.util.ArrayList;

/**
 * @author 杜伟毅
 * @version 1.0
 * @since 2024/10/24
 * 维恩图
 */
public class VennDiagram<T> {
    private ArrayList<T> list1;
    private ArrayList<T> list2;

    public VennDiagram() {
    }

    public VennDiagram(ArrayList<T> list1, ArrayList<T> list2) {
        // 深拷贝，避免引用传递，导致修改原集合
        this.list1 = new ArrayList<>(list1);
        this.list2 = new ArrayList<>(list1);
    }

    public ArrayList<T> getSet1() {
        return new ArrayList<>(list1);
    }

    public ArrayList<T> getSet2() {
        return new ArrayList<>(list2);
    }

    /**
     * 求两个集合的并集
     * @param list1 集合1
     * @param list2 集合2
     * @return 对函数返回值的描述
     * @author 杜伟毅
     * @since 2024/10/24 0024 11:13
     */
    public ArrayList<T> getIntersection(ArrayList list1, ArrayList list2) {
        ArrayList<T> intersection = new ArrayList<>(list1);
        intersection.retainAll(list2);
        return intersection;
    }
}
